package com.kaili.tms.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.kaili.tms.pojo.dto.SchedulingPlanDTO;
import com.kaili.tms.pojo.dto.SchedulingPlanDetailsAddDTO;
import com.kaili.tms.pojo.dto.SchedulingPlanDetailsUpdateDTO;
import com.kaili.tms.pojo.dto.SchedulingPlanUpdateDTO;
import com.kaili.tms.pojo.entity.SchedulingPlanAddEnity;
import com.kaili.tms.pojo.vo.BaseDriverVO;
import com.kaili.tms.pojo.vo.DateVO;
import com.kaili.tms.pojo.vo.SchedulingDetailShiftsRulesVO;
import com.kaili.tms.pojo.vo.SchedulingPlanVO;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * @version 1.0
 * @author: xinglei @Time: 19-2-14 上午9:05 @Copyright: © 2018 杭州凯立通信有限公司 版权所有 @Warning: 本内容仅限于公司内部传阅,
 *     禁止外泄或用于其它商业目的
 */
@Service
public interface SchedulingPlanService {
    /**
     * 新增排班计划
     *
     * @param VehicleShiftsAdd
     * @return void
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    Integer schedulingPlanAdd(SchedulingPlanAddEnity schedulingPlanAdd);

    /**
     * 修改车辆班次信息
     *
     * @param VehicleShiftsAdd
     * @return void
     * @author:xinglei @Time: 19-2-15 上午9:13
     */
    void schedulingPlanUpdate(SchedulingPlanUpdateDTO schedulingPlan0UpdateDTO);

    /**
     * 获取车次编码
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    String getVehicleCode(Integer sitId);

    /**
     * 分页查询车辆班次信息
     *
     * @param page
     * @param vehicleShiftsAdd
     * @return com.baomidou.mybatisplus.plugins.Page<com.kaili.tms.pojo.vo.VehicleShiftsVO>
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    Page<SchedulingPlanVO> queryschedulingPlan(
            Page<SchedulingPlanVO> page, SchedulingPlanDTO schedulingPlanDTO);

    /**
     * 根据车线ID去查询班次规则表
     *
     * @param sitId
     * @return
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingDetailShiftsRulesVO> getAllShiftsRules(Long carLineId);

    /**
     * 插入备份表
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    Integer shiftsSchedulingAdd(SchedulingPlanDetailsAddDTO schedulingPlanDetailsAddDTO1);

    /**
     * 删除排班计划
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    Integer schedulingPlanDelete(Long planId);

    /**
     * 得到排版编号
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    String schedulingPlanCode(Integer sitId);

    /**
     * 修改排班计划明细
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void schedulingPlanDetailUpdate(
            List<SchedulingPlanDetailsUpdateDTO> schedulingPlanDetailsUpdateDTO);

    /**
     * 根据车牌号查询车两
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<BaseDriverVO> schedulingPlanCarId(HashMap map);

    /**
     * 根据车牌号查询车两
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<DateVO> getDateAndschedulingPlan(String startTime, String endTime, Long carLineId, Long planId);

    /**
     * 随机排班
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<DateVO> getDateAndschedulingPlanRanom(
            String startTime, String endTime, Long carLineId, Long planId);
}
